package gui;

import javax.swing.RowFilter;

import org.apache.log4j.Logger;

import logic.file.IFile;

public class FileRowFilter extends RowFilter<FilesTableModel, Integer> {

	Logger logger = Logger.getLogger(this.getClass());
	
	//TODO do rozważenia kompilowanie regexa i użycie klas Pattern i Matcher
	String pattern;
	
	//TODO nalezaloby zadbać o to by nie możliwe bylo zmienienie patterna kiedy wiersze są sprawdzanie przez metodę include
	//kiedy jest ona wywoływana???
	@Override
	public boolean include(Entry<? extends FilesTableModel, ? extends Integer> entry) {
		//logger.info("include executed");
		//logger.debug(entry.getModel().getRow(entry.getIdentifier()));
		if (entry.getModel().getRow(entry.getIdentifier()).getName().matches(pattern)) {
			return true;
		}
		return false;
	}
	
	public String convertPatternToRegex(String roughPattern) {
		String tmpPattern;
		tmpPattern = roughPattern.replaceAll("\\.", "\\\\.");
		tmpPattern = roughPattern.replaceAll("\\*", ".*");
		return tmpPattern;
	}
	
	public void setPattern(String pattern) {
		this.pattern = convertPatternToRegex(pattern);
	}

}
